//
//  TTRTCZegoConfig.h
//  TTLive
//
//  Created by Toj on 2/2/21.
//  只做配置说明, 没有任何作用
//

#ifndef TTRTCZegoConfig_h
#define TTRTCZegoConfig_h

// 音视频
#import <ZegoLiveRoomOSX/zego-api-sound-level-oc.h>
#import <ZegoLiveRoomOSX/ZegoLiveRoomApi.h>
#import <ZegoLiveRoomOSX/ZegoLiveRoomApi-Player.h>
#import <ZegoLiveRoomOSX/ZegoLiveRoomApi-Publisher.h>
#import <ZegoLiveRoomOSX/ZegoLiveRoomApi-Publisher2.h>
#import <ZegoLiveRoomOSX/zego-api-external-video-capture-oc.h>
#import <ZegoLiveRoomOSX/ZegoLiveRoomApi-Publisher2.h>

// 分享
#import "zego-screencapture.h"
#import "zego-screencapture-defines.h"
#import "zego-windowthumbnail-defines.h"
#import "zego-windowthumbnail.h"

#import "VIPZegoVideoCaptureFromScreen.h"

#import "VIPRTCZegoModel.h"
#import "VIPPath.h"
#import "VIPWrite.h"
#import "NSString+Zego.h"

/** 直播的模式
 ** 连麦模式
 直播流会推到即构服务器, 然后转推到CDN,
 默认连麦者之间从即构服务器拉流, 观众从 CDN 拉流
 * ZEGOAPI_JOIN_PUBLISH    = 0,
 * ZEGO_JOIN_PUBLISH       = ZEGOAPI_JOIN_PUBLISH,
 
 ** 混流模式
 同连麦模式, 有混流需求时使用
 * ZEGOAPI_MIX_STREAM      = 1 << 1,
 * ZEGO_MIX_STREAM         = ZEGOAPI_MIX_STREAM,
 
 ** 单主播模式
 直播流会直接推到CDN, 不经过即构服务器
 * ZEGOAPI_SINGLE_ANCHOR   = 1 << 2,
 * ZEGO_SINGLE_ANCHOR      = ZEGOAPI_SINGLE_ANCHOR,
 */
#define kZegoPublishFlag ZEGOAPI_JOIN_PUBLISH

/** 视图预览视频模式
 等比缩放，可能有黑边
 * ZegoVideoViewModeScaleAspectFit   = 0,
 
 等比缩放填充整View，可能有部分被裁减
 * ZegoVideoViewModeScaleAspectFill  = 1,
 
 填充整个View
 * ZegoVideoViewModeScaleToFill      = 2
 */
#define kZegoVideoRenderMode ZegoVideoViewModeScaleAspectFit
// 外部采集填充模式 ZegoVideoFillMode 同上
#define kZegoVideoFillMode ZegoVideoFillModeBlackBar

/** 外部采集的格式
 * kZegoPixelFormatUnknown = 0,
 * kZegoPixelFormatI420 = 1,            仅windows下支持
 * kZegoPixelFormatNV12 = 2,            暂未支持
 * kZegoPixelFormatNV21 = 3,            暂未支持
 * kZegoPixelFormatBGRA32 = 4,          默认的画面数据的颜色空间类型
 * kZegoPixelFormatRGBA32 = 5,          暂未支持
 * kZegoPixelFormatCVImageBuffer = 100, macOS下CVImageBufferRef类型数据
 */
#define kZegoVideoPixelFormat kZegoPixelFormatCVImageBuffer

/** log等级和路径
 * kZegoLogLevelGrievous = 0,
 * kZegoLogLevelError = 1,
 * kZegoLogLevelWarning = 2,
 * kZegoLogLevelGeneric = 3,  通常在发布产品中使用
 * kZegoLogLevelDebug = 4     调试阶段使用
 */
#define kZegoScreenCaptureLogLevel kZegoLogLevelDebug
// 即购日志路径 *** C字符串
#define kZegoLogPath [[VIPPath zegoLogPath] cStringUsingEncoding:NSASCIIStringEncoding]

// 业务类型: 0: 直播类型, 2: 实时音视频类型. 默认为:0
#define kZegoBusinessType 0

// 分辨率
#define kZegoMainVideoResolution CGSizeMake(320, 180)
#define kZegoAuxVideoResolution  CGSizeMake(960, 720)
// 比特率(码率)
#define kZegoMainVideoBitrate (200 * 1000)
#define kZegoAuxVideoBitrate (1000 * 1000)
// 帧率
#define kZegoVideoFPS 15

// #define kISAUXStream 1 // 是否开启辅助流
#define kMAINStreamExtraInfo @"VIPCODE_SMALL_STREAM_"
#define kAUXStreamExtraInfo @"VIPCODE_LAGRE_STREAM_"

#define kMAINStreamID(uid) [NSString stringWithFormat:@"%@%@",kMAINStreamExtraInfo, uid]
#define kAUXStreamID(uid)  [NSString stringWithFormat:@"%@%@",kAUXStreamExtraInfo,  uid]

#define WS(weakSelf)  __weak __typeof(&*self)weakSelf = self;

#endif /* TTRTCZegoConfig_h */
